home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
cpp_libs
/
answrbok
/
5_5.lha
/
5_5
/
intset.c
< prev
next >
Wrap
Text File
|
1993-08-08
|
876b
|
53 lines
* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */
* The C++ Answer Book */
* Tony Hansen */
* All rights reserved. */
xtern int error(const char * ...);
ifdef NONLOCAL /* DELETE */
include <intset.h>
else /* DELETE */
include "intset.h" /* DELETE */
endif /* DELETE */
ntset::intset(int m, int n)
if (m < 1 || n < m) error("illegal intset size");
cursize = 0;
maxsize = m;
x = new int[maxsize];
ntset:: ~intset()
delete x;
oid intset::insert(int t)
if (++cursize > maxsize) error("too many elements in intset");
int i = cursize - 1;
x[i] = t;
while (i > 0 && x[i-1] > x[i])
{
int t = x[i];
x[i] = x[i-1];
x[i-1] = t;
i--;
}
nt intset::member(int t)
int l = 0;
int u = cursize - 1;
while (l <= u)
{
int m = (l+u) / 2;
if (t < x[m]) u = m - 1;
else if (t > x[m]) l = m + 1;
else return 1;
}
return 0;